Всем спасибо.
В итоге пришел к такому рабочему решению
import pysvn
import datetime
from time import sleep
from multiprocessing import Process, Queue, Manager
from threading import Thread
class ExportSVN(object):
def __init__(self, url):
self.client = pysvn.Client()
self.url = url
self.qq = Queue()
self.revision = None
def do_export(self):
print "Exporting {url}".format(url=self.url)
self.client.callback_notify = self.notify_export
revision = self.client.export(self.url, r'D:\tezt', force=True).number
self.revision = revision
#print "\nExported at {rev}".format(rev=revision)
def notify_export(self, event_dict):
data = "{action} -> {path}".format(action=event_dict.get('action'), path=event_dict.get('path'))
self.qq.put(data)
#print data
def infinit_gena(self):
print " *** thread gena started ***"
t = Thread(target=self.do_export,)
t.start()
while True:
sleep(0.1)
data = self.qq.get()
yield data
if not t.isAlive():
yield self.revision
break
if __name__ == '__main__':
svnex = ExportSVN("svn://vault/folder")
for line in svnex.infinit_gena():
print '{line}'.format(line=line)
raw_input("\nPress any key to continue")
multiprocessing.Process ругался на pickle.
В итоге решил использовать threads - GIL, надеюсь, не будет палкой в колесе.