本文目录一览:
这段PYTHON代码怎么修改?
把这些写成一个函数
然后进行 加入多进程池,进程数10个 例如:
from multiprocessing import Pool
import os, time, random
def worker(msg):
t_start = time.time()
print('{}开始执行,进程号为 {}'.format(msg, os.getpid()))
# random.random() #随机生成0-1之间的浮点数
time.sleep(random.random() * 2)
t_stop = time.time()
print('{} 执行完毕,耗时{}'.format(msg, t_stop - t_start))
def main():
po = Pool(3)
for i in range(10):
# Pool.apply_async(强调要用的目标, (传递参数,))
po.apply_async(worker, (i,))
print('---开始---')
po.close() # 关闭进程池,关闭后po不再接受新的请求
po.join() # 等待po中所有进程执行完成,必须放在close语句之后
print('---结束---')
if __name__ == '__main__':
main()
这个Python代码该怎么改?为什么错了?
Python告诉你:float()函数的参数需要是一个字符串或一个数,不能是列表
两种方法解决:
将参数更改(不推荐,达不到原本的想法)
改代码(推荐):
1. 把159行改为:self.score = list(map(float, score))
2. 在159行下面添加:self.cource = max(self.score)
(第2项是为了get_cource方法不报错)
3. 运行,看看是否OK
(如果还报错可以追问,求采纳)
python这个代码没输出,没报错,怎么改?
要使用线程:
要么定义一个类继承threading.Thread,重写run方法;
要么创建一个threading.Thread类的对象,将你要线程执行的函数指定为target参数。
你这里定义了类ThreadClass,但没继承threading.Thread类,又指定了target,但指定的是一个类不是一个函数,所以没输出。
非要这样搞,可以改成这样:
import threading
class ThreadClass:
def __init__(self,num): self.num = num
def run(self):
print("this is def ",self.num)
n=['a','b','c','d','e']
lis=[]
for i in n:
th = threading.Thread(target=ThreadClass.run,args=(ThreadClass(i),))
lis.append(th)
for t in lis:
t.start()
for t in lis:
t.join()
缩进格式见图:
运行结果如下: