本文目錄一覽:
這段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()
縮進格式見圖:
運行結果如下:
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/301759.html