Python 需要多处理此编码的帮助吗

Python 需要多处理此编码的帮助吗,python,multiprocessing,Python,Multiprocessing,我正在将这个编码中的数字写入文件,但要想获得所需数字中的数字量,只需一个进程就可以花费数小时来编写 from multiproccessing import Pool print('What number would you like to start at?') datastart = raw_input() #user input for datastart x= int(datastart) #sets x to datastart print('What number would

我正在将这个编码中的数字写入文件,但要想获得所需数字中的数字量,只需一个进程就可以花费数小时来编写

from multiproccessing import Pool

print('What number would you like to start at?')
datastart = raw_input() #user input for datastart

x= int(datastart) #sets x to datastart

print('What number would you like to end at?')
dataend= raw_input() #user input to question at hand and sets var.

print('would you like to write file in normal or reverse? \n (n/r)')
detailer=raw_input() #sets forward or reverse writing mode

print('what password length would you like?')
passwordlen=int(raw_input())# sets length of file to be writen

print('Please wait while file is created!')
f=open(str(datastart)+'-'+str(dataend)+'-'+str(passwordlen)+'.txt','a')

def NumberCrunch(nc):

    while detailer == 'n':
        x=datastart
        while x <= int(dataend):
            num= str(x)
            while len(num) < passwordlen:
                num='0'+num
            if len(num) == passwordlen:
                f.write(num+'\n')
            x+=1


    while detailer == 'r':
        x=int(dataend)
        while x >= int(datastart):
            num= str(x)
            while len(num) < passwordlen:
                num='0'+num
            if len(num +'\n'):
                f.write(num +'\n')


            x-=1

if __name__ == '__main__':
    with Pool(process = 16) as p:
        p.map(NumberCrunch,chunksize =10)
        p.close()
        p.join()


f.close()
print('File has been created! Enjoy!')
来自多进程导入池的

打印('您希望从哪个号码开始?')
datastart=raw_input()#datastart的用户输入
x=int(datastart)#将x设置为datastart
打印('您希望结束于哪个号码?')
dataend=raw_input()#用户输入手头的问题并设置变量。
print('您想以普通还是反向写入文件?\n(n/r)'
detailer=raw_input()#设置正向或反向写入模式
打印('您希望密码的长度是多少?')
passwordlen=int(raw_input())#设置要写入的文件的长度
打印('正在创建文件,请稍候!')
f=open(str(datastart)+'-'+str(dataend)+'-'+str(passwordlen)+'.txt',a')
def编号运行(nc):
而detailer=='n':
x=数据启动
当x=int(datastart)时:
num=str(x)
而len(num)
我使用的服务器运行python 2.7 64位、duel xeon 2.20双四核,共16核、32gb ram和3张特斯拉卡。修改池(进程=(您的cpu核心数))以确保它在您的计算机上运行

我正在尝试使用所有内核来处理数据范围,从datastart到dataend,以正向写入模式,或者以反向写入模式从dataend到datastart。 我已经尝试过多处理、排队。仍然只使用一个进程或引发的系统退出

有没有更好的方法来编写多处理程序,或者我遗漏了什么

使用此选项是否更好:

from multiprocessing import Pool

print('What number would you like to start at?')
datastart = raw_input() #user input for datastart

x= int(datastart) #sets x to datastart

print('What number would you like to end at?')
dataend= raw_input() #user input to question at hand and sets var.

print('would you like to write file in normal or reverse? \n (n/r)')
detailer=raw_input() #sets forward or reverse writing mode

print('what password length would you like?')
passwordlen=int(raw_input())# sets length of file to be writen

print('Please wait while file is created!')
f=open(str(datastart)+'-'+str(dataend)+'-'+str(passwordlen)+'.txt','a')

def NumberCrunch(nc):
    while detailer == 'f':
        for i in range(datastart,dataend,1):
            num = str(i)
            while len(num) < passwordlen:
                num = '0' + num
            if len(num)== passwordlen:
                f.write(num+'n')
    while detailer == 'r':
        for i in range(dataend,datastart,-1):
            num= str(i)
            while len(num) < passwordlen:
                num = '0'+num
            if len(num)== passwordlen:
                f.write(num+'\n')
if __name__=='__main____':
    with Pool(process = 16) as p:
        p.map(Numbercrunch,i,chuncksize=10)
        p.close()
        p.join()
f.close()
p.close()
print('File has been created')
来自多处理导入池的

打印('您希望从哪个号码开始?')
datastart=raw_input()#datastart的用户输入
x=int(datastart)#将x设置为datastart
打印('您希望结束于哪个号码?')
dataend=raw_input()#用户输入手头的问题并设置变量。
print('您想以普通还是反向写入文件?\n(n/r)'
detailer=raw_input()#设置正向或反向写入模式
打印('您希望密码的长度是多少?')
passwordlen=int(raw_input())#设置要写入的文件的长度
打印('正在创建文件,请稍候!')
f=open(str(datastart)+'-'+str(dataend)+'-'+str(passwordlen)+'.txt',a')
def编号运行(nc):
而detailer==“f”:
对于范围内的i(datastart、dataend、1):
num=str(i)
而len(num)

任何想法或帮助都会大有帮助。提前谢谢你

当我使用多处理时,我使用进程而不是池。像这样:

from multiprocessing import Process

def main_process(myargs):
    #do stuff here

#main_data defined elsewhere with items inside.
for k,myargs in main_data.items(): 
    p = Process(target=main_process, args=(myargs,))
    p.start()

而detailer=='n':
-您希望
detailer
什么时候不再是
'n'
?打字错误应该是'f'。我会编辑代码。你的代码乱七八糟,有很多错误。你太过分了。买一本书。读一下。逐步向上。您有一个函数
def NumberCrunch(nc):
只接受一个参数。。。然后你就不用那个参数了
p.map(NumberCrunch,chunksize=10)
引发异常,因为您缺少迭代器。你有一个更基本的问题,你没有把你的算法分割成平行的块。如果你让它工作,所有的子进程将完成所有的工作。谢谢你,我将尝试一下。我还没有尝试过这个过程。改为进程运行得很好,占用了98%的cpu处理能力,并且在几分钟内完成了整个文件的编写。非常感谢您的回复。@Mikey如果这解决了您的问题,请单击复选标记以表明这是答案。谢谢