⑴ 關於python多線程問題求解
看下面的代碼 你就理解了,至於業務邏輯自己去實現
#coding:utf-8
importthreading
if__name__=="__main__":
obj={'test':'關於python多線程問題求解'}
t=threading.Thread(target=Run_One,args=(obj,))
t.setDaemon(False)
t.start()
defRun_One(objvalue):
ls_threadone=[]#線程集合
foriinrange(1,8):
t=threading.Thread(target=Run_Two,args=(i,objvalue))
t.setDaemon(False)
t.start()
ls_threadone.append(t)
fortinls_threadone:
t.join()#等待所有線程執行完畢如果禁用那麼直接向下執行
print("線程全部執行完畢")defRun_Two(types,dataList):
print("多個參數傳遞")
⑵ 怎麼判斷ThreadPool線程池裡的任務都執行完畢
c# ThreadPool 判斷子線程全部執行完畢的四種方法
1、先來看看這個
多線程編程
多線程用於數據採集時,速度明顯很快,下面是基本方法,把那個auto寫成採集數據方法即可。
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
try
{
ThreadPool.SetMaxThreads(3, 3); //設置最大線程數
for (int i = 0; i < 10; i++)
{
⑶ 怎麼判斷一個函數是否執行完畢並且記錄此函數沒有執行
函數擱在那裡,執行完畢才會進入下一步,所以這個問題除非發生在多線程,才會有其他答案。可以設置一個變數連通2個線程,再另一個線程里判斷這個變數是否被賦值,而在等待的線程中給哪個方法函數返回值,就可以了!
⑷ python 多線程狀態
一般在子線程/進程里列印信息,來判斷不同線程/進程運行到了指定位置。
類的方式實例化後,可以調用is_alive()方法判斷是否在運行。
下面這里有個例子可以試試,有注釋,會python的話應該直接就能看懂。
http://study.163.com/forum/detail/664022.htm
⑸ 多線程下如何判斷線程全部執行完了呢
List<Thread> arr = new List<Thread>();
for (int i =0; i <90; i=i+5) //循環創建線程
{
Thread myThread =new Thread(delegate() {catchdate(i,key);});
myThread.Start();
arr.Add(myThread);
}
foreach(Thread t in arr){
while(t.IsAlive){
Thread.Sleep(10);
}
}
// 走到這里,所有線程都結束了,哈哈
⑹ python編程中線程結束的問題
def _exitCheckfunc():
print "ok"
try:
while 1:
alive=False
if thread_.isAlive():
alive=True
if not alive:
break
time.sleep(1)
#為了使得統計時間能夠運行,要捕捉 KeyboardInterrupt :ctrl-c
except KeyboardInterrupt, e:
traceback.print_exc()
print "consume time :",time.time()-start
threading._shutdown=_exitCheckfunc
自己在主線程中寫一個死循環來接受ctrl+c的信號。
或者用進程監控 :
http://code.activestate.com/recipes/496735-workaround-for-missed-sigint-in-multithreaded-prog/
⑺ 如何判斷線程已執行完畢
其中一個線程?使用類變數判斷就可以了。
class A{
static boolean aStop = false;
static void test(){
new AThread().start();
while(! aStop){
}
System.out.println("AThread stoped.");
}
class AThread extends Thread{
public void run(){
/////////////////////////
aStop = true;
}
}
}
⑻ python線程 問題請教,怎麼保證子線程執行完畢
首先子線程必須由主線程啟動,所以嚴格意義上的「子線程結束後再執行主線程」是不可能實現,你的意思應該是:主線程創建完子線程後,等待子線程退出,在繼續執行。 你的代碼基本沒有多大問題,只是 Join 方法位置放置不對。 thread1.Start(); // 先啟動所有子線程 thread2.Start(); thread3.Start(); thread4.Start(); thread5.Start(); thread1.Join(); // 然後在等待子線程退出 thread2.Join(); thread3.Join(); thread4.Join(); thread5.Join(); 你先前的代碼: thread1.Start(); // 線程1 啟動 thread1.Join(); // 等待 線程1 退出,線程1 未退出前,後面代碼無法執行 thread2.Start(); // 以下代碼,均同上所述。 thread2.Join(); thread3.Start(); thread3.Join(); thread4.Start(); thread4.Join();
⑼ python 主程序結束的時候線程是否結束問題2個問題
第一個問題:因為主進程已經結束,相關的資源已經釋放,而線程還在後台運行,所以會導致線程找不到相關的資源和定義
第二個問題:因為主程序結束的時候,並沒有等待子線程結束,也沒有強制關閉子線程,因此還在後台運行,有兩個辦法可以讓他們同時結束,一個辦法是在在構建進程的時候增加參數 deamon=True, 第二個辦法就是在程序最後增加thread1.join(),thread2.join()
⑽ 如何判斷線程池所有任務是否執行完畢
void shutdown()
啟動一次順序關閉,執行以前提交的任務,但不接受新任務。如果已經關閉,則調用沒有其他作用。
拋出:
SecurityException- 如果安全管理器存在並且關閉,此 ExecutorService 可能操作某些不允許調用者修改的線程(因為它沒有保持RuntimePermission("modifyThread")),或者安全管理器的checkAccess方法拒絕訪問。
isTerminated
如果關閉後所有任務都已完成,則返回true。注意,除非首先調用shutdown或shutdownNow,否則isTerminated永不為true。
返回:
如果關閉後所有任務都已完成,則返回true