Nell'uso di Calc devo sviluppare delle analisi e dei calcoli sulle celle del foglio.
Ho scoperto l'enorme potenzialità velocità e semplicità di affiancare Python al Basic.
in Basic le seguenti istruzioni che riporto se utili a qualcuno, provvedono ad un ponte tra i due ambienti:
Codice: Seleziona tutto
Function LanciaPyFunct(sFilePy , funct , args As Array)
'sFilePy = "MyPyFunct.py" ' modulo implementato della mia dir LibreOffice/4/user/Scripts/python
'funct = MPS ' la mia funzione nel modulo MyPyFunct.py
' args = Array(par1, par2, ...) i parametri della funzione funct
sFunctionPy = "vnd.sun.star.script:" & sFilePy & "$" & func & _
"?language=Python&location=user"
oMSPF = createUnoService( _
"com.sun.star.script.provider.MasterScriptProviderFactory")
gScriptProvider = oMSPF.createScriptProvider("")
oScript = gScriptProvider.getScript(sFunctionPy)
pyReturn = oScript.invoke(args, Array(), Array())
multiprocessing di python con la funzione pool, semplice da utilizzare. Ad esempio in Python l'esempio
più semplice ,senza parametri, che funziona perfettamente lanciata in un editor di Python
Codice: Seleziona tutto
import multiprocessing
def MP(x):
return x * x
def MPS():
oPool = multiprocessing.Pool() #multiprocessing.
aResults = oPool.map( MP, (1, 2, 3, 4, 5, 6, 7, 8) )
oPool.close()
return aResults # tupla dei quadrati dei numeri
pass
'Error 1 calling MPS
Type: com.sun.star.uno.RuntimeException
(<class 'AttributeError'>:'module' object has no attribute 'argv' ...
Qualcuno è in grado di esporre qualche considerazione ???
Io ho verificato che lanciando da Python, vengono creati tanti ulteriori processi autonomi python.exe pari ai processori del PC.
Forse LibreOffice non riesce a creare tali processi con un python all'interno del proprio processo ???
Grazie per eventuali approfondimenti
Nicola Giardinelli