python - 我可以使用多处理使其并行化吗?

标签 python

此代码来自:http://code.activestate.com/recipes/577090-file-encryption-using-stream-cipher/

import sys 
import random 

if len(sys.argv) != 4: 
    print "Usage: encdec_.py longintkey [path]filename1 [path]filename2" 
    sys.exit()   
random.seed(long(sys.argv[1])) # key 
f1 = open( sys.argv[2], "rb") 
bytearr = map (ord, f1.read () ) 
f2 = open( sys.argv[3], "wb" ) 
for i in range(len(bytearr)): 
    f2.write(chr(bytearr[i] ^ random.randint(0, 255))) 
f1.close() 
f2.close() 

这段代码可以使用multiprocessing并行化吗?

最佳答案

通常您会将文件分成多个部分并将每个部分发送到一个单独的进程以进行多处理,但在这种情况下这不起作用,因为您需要从同一种子按顺序生成随机数。

如果您愿意更改加密算法,您可以通过多种替代方法将其设置为能够处理多个 block 。但是“流密码”特别不适合这种事情。

您可以先生成随机数,然后将这些生成的数字连同它们的位置一起提供给多个进程,但这更有可能减慢您的速度而不是加快您的速度。

所以我会说“不”,你不能让它多处理,至少不能以实用的方式。

(我假设这是一个实验或学习练习,你不是想用它来进行严肃的加密。如果你想用它来做一些严肃的事情,有很多功能齐全的加密库函数可供选择来自.)

关于python - 我可以使用多处理使其并行化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11018489/

相关文章:

python - 重写父类方法时的问题

python - 识别砖墙中的砖 block

python - Azure webapps 将反斜杠重写为斜杠

python - 如何在Python中实现自定义多处理连续(异步)控制?

python - 如何查看安装的Anaconda是32位还是64位的?

python - 将文本文件中的数据的度分转换为弧度

python - 从树莓派录制视频并将其保存到外部硬盘驱动器

python - 在 Python 中绘制聚类图

python - defaultdict 与 dict 元素初始化

python - 将具有不同键的字典的值相乘