2

クラス内で別のクラスコンストラクターを開始するためにスレッドを作成しようとしていますが、pool.apply_async期待どおりに kwargs を渡していないようです。これが私のコードです(スレッドコードのみを含めるようにトリミングされています):

from MyDatabaseScript import DB

class Trinity:
      def __init__(self):

      #lets split a thread off and work on connecting to the mysql server
      pool = ThreadPool(processes=1) #establish the thread pool

      #I want to pass 'self' as an arg to DB because the Trinity instance has class variables that I want to use
      args, kwargs = (self,), {"host":"my.server.name", "user": "databaseuser", "passwd": "xxxxxxxxxxx", "db": "database name"} 

      async_result = pool.apply_async(DB(), args, kwargs) #create the thread pool call for the DB class with the kwargs

これですべて正常に動作し、エラーは発生しなくなりましたが、DB() 側ではコードは単純に見えます。これは次のとおりです。

import MySQLdb

class DB:
      def __init__( self, tms=None, **kwargs ):
          print tms, kwargs

問題は、関数内の印刷コマンドが__init__何も印刷しないことです。次のようになります。

  None {} 
4

1 に答える 1

3

DBに渡す代わりに呼び出しDBていpool.apply_asyncます。

落とす()

async_result = pool.apply_async(DB, args, kwargs)
于 2013-08-27T16:05:24.790 に答える